11 research outputs found
What Java Developers Know About Compatibility, And Why This Matters
Real-world programs are neither monolithic nor static -- they are constructed
using platform and third party libraries, and both programs and libraries
continuously evolve in response to change pressure. In case of the Java
language, rules defined in the Java Language and Java Virtual Machine
Specifications define when library evolution is safe. These rules distinguish
between three types of compatibility - binary, source and behavioural. We claim
that some of these rules are counter intuitive and not well-understood by many
developers. We present the results of a survey where we quizzed developers
about their understanding of the various types of compatibility. 414 developers
responded to our survey. We find that while most programmers are familiar with
the rules of source compatibility, they generally lack knowledge about the
rules of binary and behavioural compatibility. This can be problematic when
organisations switch from integration builds to technologies that require
dynamic linking, such as OSGi. We have assessed the gravity of the problem by
studying how often linkage-related problems are referenced in issue tracking
systems, and find that they are common
Contracts in the Wild: A Study of Java Programs (Artifact)
This artefact contains a dataset of open-source programs obtained from the Maven Central Repository and scripts that first extract contracts from these programs and then perform several analyses on the contracts extracted. The extraction and analysis is fully automated and directly produces the tables presented in the accompanying paper.
The results show how contracts are used in real-world program, and how their usage changes between versions and within inheritance hierarchies
Self-Adaptation in Industry: A Survey
Computing systems form the backbone of many areas in our society, from
manufacturing to traffic control, healthcare, and financial systems. When
software plays a vital role in the design, construction, and operation, these
systems are referred as software-intensive systems. Self-adaptation equips a
software-intensive system with a feedback loop that either automates tasks that
otherwise need to be performed by human operators or deals with uncertain
conditions. Such feedback loops have found their way to a variety of practical
applications; typical examples are an elastic cloud to adapt computing
resources and automated server management to respond quickly to business needs.
To gain insight into the motivations for applying self-adaptation in practice,
the problems solved using self-adaptation and how these problems are solved,
and the difficulties and risks that industry faces in adopting self-adaptation,
we performed a large-scale survey. We received 184 valid responses from
practitioners spread over 21 countries. Based on the analysis of the survey
data, we provide an empirically grounded overview of state-of-the-practice in
the application of self-adaptation. From that, we derive insights for
researchers to check their current research with industrial needs, and for
practitioners to compare their current practice in applying self-adaptation.
These insights also provide opportunities for the application of
self-adaptation in practice and pave the way for future industry-research
collaborations.Comment: 43 page
Viewport for Component Diagrams
This paper describes a viewport technique for use in the visualization of large graphs, e.g. UML component diagrams. This technique should help to work with complex diagrams (hundreds or thousands of components) by highlighting details of the important parts of the diagram and their related surroundings without losing the global perspective. To avoid visual clutter it uses clusters of interfaces and components